package com.headwind.logistics.order.mapper;

import com.headwind.logistics.common.pojo.ExpressGrant;
import com.headwind.logistics.common.pojo.PutSendInfo;
import com.headwind.logistics.order.dto.PlanOrderAddressCustomerDto;
import com.headwind.logistics.common.pojo.BaseNetSite;
import com.headwind.logistics.order.entity.OrderFeeType;
import com.headwind.logistics.order.entity.OrderPack;
import com.headwind.logistics.order.entity.PlanOrder;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author 盛夏
 * @Date 2020-07-17 上午 10:45
 * @Version 1.0
 * @DESCRIPTION 预录单的数据访问层
 */
public interface PlanOrderMappder {

    /**
     * 根据网点主键查询面单发放记录表
     * @param useObject 网点主键
     * @return 面单发放记录对象
     */
    List<ExpressGrant> queryExpressGrant(String useObject);
    /**
     *  查询所有包装类型
     * @return 包装类集合
     */
    List<OrderPack> queryOrderPack();

    /**
     * 查询所有费用类型
     * @return  费用类型集合
     */
    List<OrderFeeType> queryOderFeeType();

    /**
     * 查询预录单数量
     * @return  预录单数量
     */
    int queryPlanOrderCount();

    /**
     * 查询所有预录单数据
     * @param page   第几条数据
     * @param limit 当前页码
     * @return  预录单数据传输对象集合
     */
    List<PlanOrderAddressCustomerDto> queryPlanOrderPage(@Param("page") Integer page, @Param("limit") Integer limit,
                                                         @Param("username") String username,
                                                         @Param("planOdd") String planOdd,
                                                         @Param("phone") String phone,
                                                         @Param("orderTime") String orderTime,@Param("empId") Long empId);

    /**
     * 根据区名查询区的ID然后查询区的所有网点
     * @param areaName 区名称
     * @return 网点集合
     */
    List<BaseNetSite> queryBaseNetSiteById(String areaName);


    /**
     * 根据预录单号查询预录单
     * @param planOrderOdd  预录单号
     * @return      返回客户Id
     */
    PlanOrderAddressCustomerDto queryPlanOrderByOdd(String planOrderOdd);


    /**
     * 根据预录单号修改预录单状态
     * @param planOrderOdd  预录单号
     * @return              状态码
     */
    int updatePlanOrderStart(@Param("start") String start,@Param("planOrderOdd") String planOrderOdd);


    /**
     * 根据预录单号删除预录单
     * @param planOrderOdd  预录单号
     * @return  状态码
     */
    int deletePlanOrder(@Param("planOrderOdd") String planOrderOdd,@Param("empId") Long empId);

    /**
     * 根据预录单号修改预录单
     * @param planOrderOdd  预录单号
     * @param empId         操作人主键
     * @return              状态码
     */
    int updatePlanOrderByOdd(@Param("planOrderOdd") String planOrderOdd,@Param("empId") Long empId);

    /**
     * 修改地址表数据
     * @param putSendInfo  地址表对象
     * @return
     */
    int updatePutSendInfo(PutSendInfo putSendInfo);


    /**
     * 修改地址表数据
     * @param putSendInfo  地址表对象
     * @return
     */
    int updatePutSendInfos(PutSendInfo putSendInfo);


    /**
     * 修改预录单信息
     * @param planDto   预录单数据传输类
     * @return
     */
    int updatePlanOrderMessage(PlanOrderAddressCustomerDto planDto);


}
